home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / SLAX 6.0.8 / slax-6.0.8.iso / slax / base / 006-devel.lzm / usr / include / fontconfig / fontconfig.h < prev   
Encoding:
C/C++ Source or Header  |  2008-09-22  |  22.6 KB  |  949 lines

  1. /*
  2.  * $RCSId: xc/lib/fontconfig/fontconfig/fontconfig.h,v 1.30 2002/09/26 00:17:27 keithp Exp $
  3.  *
  4.  * Copyright ┬⌐ 2001 Keith Packard
  5.  *
  6.  * Permission to use, copy, modify, distribute, and sell this software and its
  7.  * documentation for any purpose is hereby granted without fee, provided that
  8.  * the above copyright notice appear in all copies and that both that
  9.  * copyright notice and this permission notice appear in supporting
  10.  * documentation, and that the name of Keith Packard not be used in
  11.  * advertising or publicity pertaining to distribution of the software without
  12.  * specific, written prior permission.  Keith Packard makes no
  13.  * representations about the suitability of this software for any purpose.  It
  14.  * is provided "as is" without express or implied warranty.
  15.  *
  16.  * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
  17.  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
  18.  * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
  19.  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
  20.  * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
  21.  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  22.  * PERFORMANCE OF THIS SOFTWARE.
  23.  */
  24.  
  25. #ifndef _FONTCONFIG_H_
  26. #define _FONTCONFIG_H_
  27.  
  28. #include <sys/types.h>
  29. #include <sys/stat.h>
  30. #include <unistd.h>
  31. #include <stdarg.h>
  32.  
  33. #if defined(__GNUC__) && (__GNUC__ >= 4)
  34. #define FC_ATTRIBUTE_SENTINEL(x) __attribute__((__sentinel__(0)))
  35. #else
  36. #define FC_ATTRIBUTE_SENTINEL(x)
  37. #endif
  38.  
  39. #ifndef FcPublic
  40. #define FcPublic
  41. #endif
  42.  
  43. typedef unsigned char    FcChar8;
  44. typedef unsigned short    FcChar16;
  45. typedef unsigned int    FcChar32;
  46. typedef int        FcBool;
  47.  
  48. /*
  49.  * Current Fontconfig version number.  This same number
  50.  * must appear in the fontconfig configure.in file. Yes,
  51.  * it'a a pain to synchronize version numbers like this.
  52.  */
  53.  
  54. #define FC_MAJOR    2
  55. #define FC_MINOR    6
  56. #define FC_REVISION    0
  57.  
  58. #define FC_VERSION    ((FC_MAJOR * 10000) + (FC_MINOR * 100) + (FC_REVISION))
  59.  
  60. /*
  61.  * Current font cache file format version
  62.  * This is appended to the cache files so that multiple
  63.  * versions of the library will peacefully coexist
  64.  *
  65.  * Change this value whenever the disk format for the cache file
  66.  * changes in any non-compatible way.  Try to avoid such changes as
  67.  * it means multiple copies of the font information.
  68.  */
  69.  
  70. #define FC_CACHE_VERSION    "2"
  71.  
  72. #define FcTrue        1
  73. #define FcFalse        0
  74.  
  75. #define FC_FAMILY        "family"        /* String */
  76. #define FC_STYLE        "style"        /* String */
  77. #define FC_SLANT        "slant"        /* Int */
  78. #define FC_WEIGHT        "weight"        /* Int */
  79. #define FC_SIZE            "size"        /* Double */
  80. #define FC_ASPECT        "aspect"        /* Double */
  81. #define FC_PIXEL_SIZE        "pixelsize"        /* Double */
  82. #define FC_SPACING        "spacing"        /* Int */
  83. #define FC_FOUNDRY        "foundry"        /* String */
  84. #define FC_ANTIALIAS        "antialias"        /* Bool (depends) */
  85. #define FC_HINTING        "hinting"        /* Bool (true) */
  86. #define FC_HINT_STYLE        "hintstyle"        /* Int */
  87. #define FC_VERTICAL_LAYOUT  "verticallayout"    /* Bool (false) */
  88. #define FC_AUTOHINT        "autohint"        /* Bool (false) */
  89. #define FC_GLOBAL_ADVANCE   "globaladvance"    /* Bool (true) */
  90. #define FC_WIDTH        "width"        /* Int */
  91. #define FC_FILE            "file"        /* String */
  92. #define FC_INDEX        "index"        /* Int */
  93. #define FC_FT_FACE        "ftface"        /* FT_Face */
  94. #define FC_RASTERIZER        "rasterizer"    /* String */
  95. #define FC_OUTLINE        "outline"        /* Bool */
  96. #define FC_SCALABLE        "scalable"        /* Bool */
  97. #define FC_SCALE        "scale"        /* double */
  98. #define FC_DPI            "dpi"        /* double */
  99. #define FC_RGBA            "rgba"        /* Int */
  100. #define FC_MINSPACE        "minspace"        /* Bool use minimum line spacing */
  101. #define FC_SOURCE        "source"        /* String (deprecated) */
  102. #define FC_CHARSET        "charset"        /* CharSet */
  103. #define FC_LANG            "lang"        /* String RFC 3066 langs */
  104. #define FC_FONTVERSION        "fontversion"    /* Int from 'head' table */
  105. #define FC_FULLNAME        "fullname"        /* String */
  106. #define FC_FAMILYLANG        "familylang"    /* String RFC 3066 langs */
  107. #define FC_STYLELANG        "stylelang"        /* String RFC 3066 langs */
  108. #define FC_FULLNAMELANG        "fullnamelang"    /* String RFC 3066 langs */
  109. #define FC_CAPABILITY       "capability"    /* String */
  110. #define FC_FONTFORMAT        "fontformat"    /* String */
  111. #define FC_EMBOLDEN        "embolden"        /* Bool - true if emboldening needed*/
  112. #define FC_EMBEDDED_BITMAP  "embeddedbitmap"    /* Bool - true to enable embedded bitmaps */
  113. #define FC_DECORATIVE        "decorative"    /* Bool - true if style is a decorative variant */
  114. #define FC_LCD_FILTER        "lcdfilter"        /* Int */
  115.  
  116. #define FC_CACHE_SUFFIX            ".cache-"FC_CACHE_VERSION
  117. #define FC_DIR_CACHE_FILE        "fonts.cache-"FC_CACHE_VERSION
  118. #define FC_USER_CACHE_FILE        ".fonts.cache-"FC_CACHE_VERSION
  119.  
  120. /* Adjust outline rasterizer */
  121. #define FC_CHAR_WIDTH        "charwidth"    /* Int */
  122. #define FC_CHAR_HEIGHT        "charheight"/* Int */
  123. #define FC_MATRIX        "matrix"    /* FcMatrix */
  124.  
  125. #define FC_WEIGHT_THIN            0
  126. #define FC_WEIGHT_EXTRALIGHT        40
  127. #define FC_WEIGHT_ULTRALIGHT        FC_WEIGHT_EXTRALIGHT
  128. #define FC_WEIGHT_LIGHT            50
  129. #define FC_WEIGHT_BOOK            75
  130. #define FC_WEIGHT_REGULAR        80
  131. #define FC_WEIGHT_NORMAL        FC_WEIGHT_REGULAR
  132. #define FC_WEIGHT_MEDIUM        100
  133. #define FC_WEIGHT_DEMIBOLD        180
  134. #define FC_WEIGHT_SEMIBOLD        FC_WEIGHT_DEMIBOLD
  135. #define FC_WEIGHT_BOLD            200
  136. #define FC_WEIGHT_EXTRABOLD        205
  137. #define FC_WEIGHT_ULTRABOLD        FC_WEIGHT_EXTRABOLD
  138. #define FC_WEIGHT_BLACK            210
  139. #define FC_WEIGHT_HEAVY            FC_WEIGHT_BLACK
  140. #define FC_WEIGHT_EXTRABLACK        215
  141. #define FC_WEIGHT_ULTRABLACK        FC_WEIGHT_EXTRABLACK
  142.  
  143. #define FC_SLANT_ROMAN            0
  144. #define FC_SLANT_ITALIC            100
  145. #define FC_SLANT_OBLIQUE        110
  146.  
  147. #define FC_WIDTH_ULTRACONDENSED        50
  148. #define FC_WIDTH_EXTRACONDENSED        63
  149. #define FC_WIDTH_CONDENSED        75
  150. #define FC_WIDTH_SEMICONDENSED        87
  151. #define FC_WIDTH_NORMAL            100
  152. #define FC_WIDTH_SEMIEXPANDED        113
  153. #define FC_WIDTH_EXPANDED        125
  154. #define FC_WIDTH_EXTRAEXPANDED        150
  155. #define FC_WIDTH_ULTRAEXPANDED        200
  156.  
  157. #define FC_PROPORTIONAL            0
  158. #define FC_DUAL                90
  159. #define FC_MONO                100
  160. #define FC_CHARCELL            110
  161.  
  162. /* sub-pixel order */
  163. #define FC_RGBA_UNKNOWN        0
  164. #define FC_RGBA_RGB        1
  165. #define FC_RGBA_BGR        2
  166. #define FC_RGBA_VRGB        3
  167. #define FC_RGBA_VBGR        4
  168. #define FC_RGBA_NONE        5
  169.  
  170. /* hinting style */
  171. #define FC_HINT_NONE        0
  172. #define FC_HINT_SLIGHT      1
  173. #define FC_HINT_MEDIUM      2
  174. #define FC_HINT_FULL        3
  175.  
  176. /* LCD filter */
  177. #define FC_LCD_NONE        0
  178. #define FC_LCD_DEFAULT        1
  179. #define FC_LCD_LIGHT        2
  180. #define FC_LCD_LEGACY        3
  181.  
  182. typedef enum _FcType {
  183.     FcTypeVoid, 
  184.     FcTypeInteger, 
  185.     FcTypeDouble, 
  186.     FcTypeString, 
  187.     FcTypeBool,
  188.     FcTypeMatrix,
  189.     FcTypeCharSet,
  190.     FcTypeFTFace,
  191.     FcTypeLangSet
  192. } FcType;
  193.  
  194. typedef struct _FcMatrix {
  195.     double xx, xy, yx, yy;
  196. } FcMatrix;
  197.  
  198. #define FcMatrixInit(m)    ((m)->xx = (m)->yy = 1, \
  199.              (m)->xy = (m)->yx = 0)
  200.  
  201. /*
  202.  * A data structure to represent the available glyphs in a font.
  203.  * This is represented as a sparse boolean btree.
  204.  */
  205.  
  206. typedef struct _FcCharSet FcCharSet;
  207.  
  208. typedef struct _FcObjectType {
  209.     const char    *object;
  210.     FcType    type;
  211. } FcObjectType;
  212.  
  213. typedef struct _FcConstant {
  214.     const FcChar8  *name;
  215.     const char    *object;
  216.     int        value;
  217. } FcConstant;
  218.  
  219. typedef enum _FcResult {
  220.     FcResultMatch, FcResultNoMatch, FcResultTypeMismatch, FcResultNoId,
  221.     FcResultOutOfMemory
  222. } FcResult;
  223.  
  224. typedef struct _FcPattern   FcPattern;
  225.  
  226. typedef struct _FcLangSet   FcLangSet;
  227.  
  228. typedef struct _FcValue {
  229.     FcType    type;
  230.     union {
  231.     const FcChar8    *s;
  232.     int        i;
  233.     FcBool        b;
  234.     double        d;
  235.     const FcMatrix    *m;
  236.     const FcCharSet    *c;
  237.     void        *f;
  238.     const FcLangSet    *l;
  239.     } u;
  240. } FcValue;
  241.  
  242. typedef struct _FcFontSet {
  243.     int        nfont;
  244.     int        sfont;
  245.     FcPattern    **fonts;
  246. } FcFontSet;
  247.  
  248. typedef struct _FcObjectSet {
  249.     int        nobject;
  250.     int        sobject;
  251.     const char    **objects;
  252. } FcObjectSet;
  253.     
  254. typedef enum _FcMatchKind {
  255.     FcMatchPattern, FcMatchFont, FcMatchScan
  256. } FcMatchKind;
  257.  
  258. typedef enum _FcLangResult {
  259.     FcLangEqual = 0,
  260.     FcLangDifferentCountry = 1,
  261.     FcLangDifferentTerritory = 1,
  262.     FcLangDifferentLang = 2
  263. } FcLangResult;
  264.  
  265. typedef enum _FcSetName {
  266.     FcSetSystem = 0,
  267.     FcSetApplication = 1
  268. } FcSetName;
  269.  
  270. typedef struct _FcAtomic FcAtomic;
  271.  
  272. #if defined(__cplusplus) || defined(c_plusplus) /* for C++ V2.0 */
  273. #define _FCFUNCPROTOBEGIN extern "C" {    /* do not leave open across includes */
  274. #define _FCFUNCPROTOEND }
  275. #else
  276. #define _FCFUNCPROTOBEGIN
  277. #define _FCFUNCPROTOEND
  278. #endif
  279.  
  280. typedef enum { FcEndianBig, FcEndianLittle } FcEndian;
  281.  
  282. typedef struct _FcConfig    FcConfig;
  283.  
  284. typedef struct _FcGlobalCache    FcFileCache;
  285.  
  286. typedef struct _FcBlanks    FcBlanks;
  287.  
  288. typedef struct _FcStrList   FcStrList;
  289.  
  290. typedef struct _FcStrSet    FcStrSet;
  291.  
  292. typedef struct _FcCache        FcCache;
  293.  
  294. _FCFUNCPROTOBEGIN
  295.  
  296. /* fcblanks.c */
  297. FcPublic FcBlanks *
  298. FcBlanksCreate (void);
  299.  
  300. FcPublic void
  301. FcBlanksDestroy (FcBlanks *b);
  302.  
  303. FcPublic FcBool
  304. FcBlanksAdd (FcBlanks *b, FcChar32 ucs4);
  305.  
  306. FcPublic FcBool
  307. FcBlanksIsMember (FcBlanks *b, FcChar32 ucs4);
  308.  
  309. /* fccache.c */
  310.  
  311. FcPublic const FcChar8 *
  312. FcCacheDir(const FcCache *c);
  313.  
  314. FcPublic FcFontSet *
  315. FcCacheCopySet(const FcCache *c);
  316.  
  317. FcPublic const FcChar8 *
  318. FcCacheSubdir (const FcCache *c, int i);
  319.  
  320. FcPublic int
  321. FcCacheNumSubdir (const FcCache *c);
  322.  
  323. FcPublic int
  324. FcCacheNumFont (const FcCache *c);
  325.  
  326. FcPublic FcBool
  327. FcDirCacheUnlink (const FcChar8 *dir, FcConfig *config);
  328.  
  329. FcPublic FcBool
  330. FcDirCacheValid (const FcChar8 *cache_file);
  331.  
  332. /* fccfg.c */
  333. FcPublic FcChar8 *
  334. FcConfigHome (void);
  335.  
  336. FcPublic FcBool
  337. FcConfigEnableHome (FcBool enable);
  338.  
  339. FcPublic FcChar8 *
  340. FcConfigFilename (const FcChar8 *url);
  341.     
  342. FcPublic FcConfig *
  343. FcConfigCreate (void);
  344.  
  345. FcPublic void
  346. FcConfigDestroy (FcConfig *config);
  347.  
  348. FcPublic FcBool
  349. FcConfigSetCurrent (FcConfig *config);
  350.  
  351. FcPublic FcConfig *
  352. FcConfigGetCurrent (void);
  353.  
  354. FcPublic FcBool
  355. FcConfigUptoDate (FcConfig *config);
  356.     
  357. FcPublic FcBool
  358. FcConfigBuildFonts (FcConfig *config);
  359.  
  360. FcPublic FcStrList *
  361. FcConfigGetFontDirs (FcConfig   *config);
  362.  
  363. FcPublic FcStrList *
  364. FcConfigGetConfigDirs (FcConfig   *config);
  365.  
  366. FcPublic FcStrList *
  367. FcConfigGetConfigFiles (FcConfig    *config);
  368.  
  369. FcPublic FcChar8 *
  370. FcConfigGetCache (FcConfig  *config);
  371.  
  372. FcPublic FcBlanks *
  373. FcConfigGetBlanks (FcConfig *config);
  374.  
  375. FcPublic FcStrList *
  376. FcConfigGetCacheDirs (FcConfig    *config);
  377.  
  378. FcPublic int
  379. FcConfigGetRescanInterval (FcConfig *config);
  380.  
  381. FcPublic FcBool
  382. FcConfigSetRescanInterval (FcConfig *config, int rescanInterval);
  383.  
  384. FcPublic FcFontSet *
  385. FcConfigGetFonts (FcConfig    *config,
  386.           FcSetName    set);
  387.  
  388. FcPublic FcBool
  389. FcConfigAppFontAddFile (FcConfig    *config,
  390.             const FcChar8  *file);
  391.  
  392. FcPublic FcBool
  393. FcConfigAppFontAddDir (FcConfig        *config,
  394.                const FcChar8   *dir);
  395.  
  396. FcPublic void
  397. FcConfigAppFontClear (FcConfig        *config);
  398.  
  399. FcPublic FcBool
  400. FcConfigSubstituteWithPat (FcConfig    *config,
  401.                FcPattern    *p,
  402.                FcPattern    *p_pat,
  403.                FcMatchKind    kind);
  404.  
  405. FcPublic FcBool
  406. FcConfigSubstitute (FcConfig    *config,
  407.             FcPattern    *p,
  408.             FcMatchKind    kind);
  409.  
  410. /* fccharset.c */
  411. FcPublic FcCharSet*
  412. FcCharSetCreate (void);
  413.  
  414. /* deprecated alias for FcCharSetCreate */
  415. FcPublic FcCharSet *
  416. FcCharSetNew (void);
  417.     
  418. FcPublic void
  419. FcCharSetDestroy (FcCharSet *fcs);
  420.  
  421. FcPublic FcBool
  422. FcCharSetAddChar (FcCharSet *fcs, FcChar32 ucs4);
  423.  
  424. FcPublic FcCharSet*
  425. FcCharSetCopy (FcCharSet *src);
  426.  
  427. FcPublic FcBool
  428. FcCharSetEqual (const FcCharSet *a, const FcCharSet *b);
  429.  
  430. FcPublic FcCharSet*
  431. FcCharSetIntersect (const FcCharSet *a, const FcCharSet *b);
  432.  
  433. FcPublic FcCharSet*
  434. FcCharSetUnion (const FcCharSet *a, const FcCharSet *b);
  435.  
  436. FcPublic FcCharSet*
  437. FcCharSetSubtract (const FcCharSet *a, const FcCharSet *b);
  438.  
  439. FcPublic FcBool
  440. FcCharSetHasChar (const FcCharSet *fcs, FcChar32 ucs4);
  441.  
  442. FcPublic FcChar32
  443. FcCharSetCount (const FcCharSet *a);
  444.  
  445. FcPublic FcChar32
  446. FcCharSetIntersectCount (const FcCharSet *a, const FcCharSet *b);
  447.  
  448. FcPublic FcChar32
  449. FcCharSetSubtractCount (const FcCharSet *a, const FcCharSet *b);
  450.  
  451. FcPublic FcBool
  452. FcCharSetIsSubset (const FcCharSet *a, const FcCharSet *b);
  453.  
  454. #define FC_CHARSET_MAP_SIZE (256/32)
  455. #define FC_CHARSET_DONE    ((FcChar32) -1)
  456.  
  457. FcPublic FcChar32
  458. FcCharSetFirstPage (const FcCharSet *a, 
  459.             FcChar32        map[FC_CHARSET_MAP_SIZE],
  460.             FcChar32        *next);
  461.  
  462. FcPublic FcChar32
  463. FcCharSetNextPage (const FcCharSet  *a, 
  464.            FcChar32        map[FC_CHARSET_MAP_SIZE],
  465.            FcChar32        *next);
  466.  
  467. /*
  468.  * old coverage API, rather hard to use correctly
  469.  */
  470.  
  471. FcPublic FcChar32
  472. FcCharSetCoverage (const FcCharSet *a, FcChar32 page, FcChar32 *result);
  473.  
  474. /* fcdbg.c */
  475. FcPublic void
  476. FcValuePrint (const FcValue v);
  477.  
  478. FcPublic void
  479. FcPatternPrint (const FcPattern *p);
  480.  
  481. FcPublic void
  482. FcFontSetPrint (const FcFontSet *s);
  483.  
  484. /* fcdefault.c */
  485. FcPublic void
  486. FcDefaultSubstitute (FcPattern *pattern);
  487.  
  488. /* fcdir.c */
  489. FcPublic FcBool
  490. FcFileIsDir (const FcChar8 *file);
  491.  
  492. FcPublic FcBool
  493. FcFileScan (FcFontSet        *set,
  494.         FcStrSet        *dirs,
  495.         FcFileCache        *cache,
  496.         FcBlanks        *blanks,
  497.         const FcChar8   *file,
  498.         FcBool        force);
  499.  
  500. FcPublic FcBool
  501. FcDirScan (FcFontSet        *set,
  502.        FcStrSet        *dirs,
  503.        FcFileCache        *cache,
  504.        FcBlanks        *blanks,
  505.        const FcChar8    *dir,
  506.        FcBool        force);
  507.  
  508. FcPublic FcBool
  509. FcDirSave (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir);
  510.  
  511. FcPublic FcCache *
  512. FcDirCacheLoad (const FcChar8 *dir, FcConfig *config, FcChar8 **cache_file);
  513.     
  514. FcPublic FcCache *
  515. FcDirCacheRead (const FcChar8 *dir, FcBool force, FcConfig *config);
  516.  
  517. FcPublic FcCache *
  518. FcDirCacheLoadFile (const FcChar8 *cache_file, struct stat *file_stat);
  519.  
  520. FcPublic void
  521. FcDirCacheUnload (FcCache *cache);
  522.  
  523. /* fcfreetype.c */
  524. FcPublic FcPattern *
  525. FcFreeTypeQuery (const FcChar8 *file, int id, FcBlanks *blanks, int *count);
  526.  
  527. /* fcfs.c */
  528.  
  529. FcPublic FcFontSet *
  530. FcFontSetCreate (void);
  531.  
  532. FcPublic void
  533. FcFontSetDestroy (FcFontSet *s);
  534.  
  535. FcPublic FcBool
  536. FcFontSetAdd (FcFontSet *s, FcPattern *font);
  537.  
  538. /* fcinit.c */
  539. FcPublic FcConfig *
  540. FcInitLoadConfig (void);
  541.  
  542. FcPublic FcConfig *
  543. FcInitLoadConfigAndFonts (void);
  544.  
  545. FcPublic FcBool
  546. FcInit (void);
  547.  
  548. FcPublic void
  549. FcFini (void);
  550.  
  551. FcPublic int
  552. FcGetVersion (void);
  553.  
  554. FcPublic FcBool
  555. FcInitReinitialize (void);
  556.  
  557. FcPublic FcBool
  558. FcInitBringUptoDate (void);
  559.  
  560. /* fclang.c */
  561. FcPublic FcStrSet *
  562. FcGetLangs (void);
  563.  
  564. FcPublic const FcCharSet *
  565. FcLangGetCharSet (const FcChar8 *lang);
  566.  
  567. FcPublic FcLangSet*
  568. FcLangSetCreate (void);
  569.  
  570. FcPublic void
  571. FcLangSetDestroy (FcLangSet *ls);
  572.  
  573. FcPublic FcLangSet*
  574. FcLangSetCopy (const FcLangSet *ls);
  575.  
  576. FcPublic FcBool
  577. FcLangSetAdd (FcLangSet *ls, const FcChar8 *lang);
  578.  
  579. FcPublic FcLangResult
  580. FcLangSetHasLang (const FcLangSet *ls, const FcChar8 *lang);
  581.  
  582. FcPublic FcLangResult
  583. FcLangSetCompare (const FcLangSet *lsa, const FcLangSet *lsb);
  584.  
  585. FcPublic FcBool
  586. FcLangSetContains (const FcLangSet *lsa, const FcLangSet *lsb);
  587.  
  588. FcPublic FcBool
  589. FcLangSetEqual (const FcLangSet *lsa, const FcLangSet *lsb);
  590.  
  591. FcPublic FcChar32
  592. FcLangSetHash (const FcLangSet *ls);
  593.  
  594. /* fclist.c */
  595. FcPublic FcObjectSet *
  596. FcObjectSetCreate (void);
  597.  
  598. FcPublic FcBool
  599. FcObjectSetAdd (FcObjectSet *os, const char *object);
  600.  
  601. FcPublic void
  602. FcObjectSetDestroy (FcObjectSet *os);
  603.  
  604. FcPublic FcObjectSet *
  605. FcObjectSetVaBuild (const char *first, va_list va);
  606.  
  607. FcPublic FcObjectSet *
  608. FcObjectSetBuild (const char *first, ...) FC_ATTRIBUTE_SENTINEL(0);
  609.  
  610. FcPublic FcFontSet *
  611. FcFontSetList (FcConfig        *config,
  612.            FcFontSet    **sets,
  613.            int        nsets,
  614.            FcPattern    *p,
  615.            FcObjectSet  *os);
  616.  
  617. FcPublic FcFontSet *
  618. FcFontList (FcConfig    *config,
  619.         FcPattern    *p,
  620.         FcObjectSet *os);
  621.  
  622. /* fcatomic.c */
  623.  
  624. FcPublic FcAtomic *
  625. FcAtomicCreate (const FcChar8   *file);
  626.  
  627. FcPublic FcBool
  628. FcAtomicLock (FcAtomic *atomic);
  629.  
  630. FcPublic FcChar8 *
  631. FcAtomicNewFile (FcAtomic *atomic);
  632.  
  633. FcPublic FcChar8 *
  634. FcAtomicOrigFile (FcAtomic *atomic);
  635.  
  636. FcPublic FcBool
  637. FcAtomicReplaceOrig (FcAtomic *atomic);
  638.  
  639. FcPublic void
  640. FcAtomicDeleteNew (FcAtomic *atomic);
  641.  
  642. FcPublic void
  643. FcAtomicUnlock (FcAtomic *atomic);
  644.  
  645. FcPublic void
  646. FcAtomicDestroy (FcAtomic *atomic);
  647.  
  648. /* fcmatch.c */
  649. FcPublic FcPattern *
  650. FcFontSetMatch (FcConfig    *config,
  651.         FcFontSet   **sets,
  652.         int        nsets,
  653.         FcPattern   *p,
  654.         FcResult    *result);
  655.  
  656. FcPublic FcPattern *
  657. FcFontMatch (FcConfig    *config,
  658.          FcPattern    *p, 
  659.          FcResult    *result);
  660.  
  661. FcPublic FcPattern *
  662. FcFontRenderPrepare (FcConfig        *config,
  663.              FcPattern        *pat,
  664.              FcPattern        *font);
  665.  
  666. FcPublic FcFontSet *
  667. FcFontSetSort (FcConfig        *config,
  668.            FcFontSet    **sets,
  669.            int        nsets,
  670.            FcPattern    *p,
  671.            FcBool        trim,
  672.            FcCharSet    **csp,
  673.            FcResult        *result);
  674.  
  675. FcPublic FcFontSet *
  676. FcFontSort (FcConfig     *config,
  677.         FcPattern    *p,
  678.         FcBool     trim,
  679.         FcCharSet    **csp,
  680.         FcResult     *result);
  681.  
  682. FcPublic void
  683. FcFontSetSortDestroy (FcFontSet *fs);
  684.  
  685. /* fcmatrix.c */
  686. FcPublic FcMatrix *
  687. FcMatrixCopy (const FcMatrix *mat);
  688.  
  689. FcPublic FcBool
  690. FcMatrixEqual (const FcMatrix *mat1, const FcMatrix *mat2);
  691.  
  692. FcPublic void
  693. FcMatrixMultiply (FcMatrix *result, const FcMatrix *a, const FcMatrix *b);
  694.  
  695. FcPublic void
  696. FcMatrixRotate (FcMatrix *m, double c, double s);
  697.  
  698. FcPublic void
  699. FcMatrixScale (FcMatrix *m, double sx, double sy);
  700.  
  701. FcPublic void
  702. FcMatrixShear (FcMatrix *m, double sh, double sv);
  703.  
  704. /* fcname.c */
  705.  
  706. FcPublic FcBool
  707. FcNameRegisterObjectTypes (const FcObjectType *types, int ntype);
  708.  
  709. FcPublic FcBool
  710. FcNameUnregisterObjectTypes (const FcObjectType *types, int ntype);
  711.     
  712. FcPublic const FcObjectType *
  713. FcNameGetObjectType (const char *object);
  714.  
  715. FcPublic FcBool
  716. FcNameRegisterConstants (const FcConstant *consts, int nconsts);
  717.  
  718. FcPublic FcBool
  719. FcNameUnregisterConstants (const FcConstant *consts, int nconsts);
  720.     
  721. FcPublic const FcConstant *
  722. FcNameGetConstant (FcChar8 *string);
  723.  
  724. FcPublic FcBool
  725. FcNameConstant (FcChar8 *string, int *result);
  726.  
  727. FcPublic FcPattern *
  728. FcNameParse (const FcChar8 *name);
  729.  
  730. FcPublic FcChar8 *
  731. FcNameUnparse (FcPattern *pat);
  732.  
  733. /* fcpat.c */
  734. FcPublic FcPattern *
  735. FcPatternCreate (void);
  736.  
  737. FcPublic FcPattern *
  738. FcPatternDuplicate (const FcPattern *p);
  739.  
  740. FcPublic void
  741. FcPatternReference (FcPattern *p);
  742.  
  743. FcPublic void
  744. FcValueDestroy (FcValue v);
  745.  
  746. FcPublic FcBool
  747. FcValueEqual (FcValue va, FcValue vb);
  748.  
  749. FcPublic FcValue
  750. FcValueSave (FcValue v);
  751.  
  752. FcPublic void
  753. FcPatternDestroy (FcPattern *p);
  754.  
  755. FcPublic FcBool
  756. FcPatternEqual (const FcPattern *pa, const FcPattern *pb);
  757.  
  758. FcPublic FcBool
  759. FcPatternEqualSubset (const FcPattern *pa, const FcPattern *pb, const FcObjectSet *os);
  760.  
  761. FcPublic FcChar32
  762. FcPatternHash (const FcPattern *p);
  763.  
  764. FcPublic FcBool
  765. FcPatternAdd (FcPattern *p, const char *object, FcValue value, FcBool append);
  766.     
  767. FcPublic FcBool
  768. FcPatternAddWeak (FcPattern *p, const char *object, FcValue value, FcBool append);
  769.     
  770. FcPublic FcResult
  771. FcPatternGet (const FcPattern *p, const char *object, int id, FcValue *v);
  772.     
  773. FcPublic FcBool
  774. FcPatternDel (FcPattern *p, const char *object);
  775.  
  776. FcPublic FcBool
  777. FcPatternRemove (FcPattern *p, const char *object, int id);
  778.  
  779. FcPublic FcBool
  780. FcPatternAddInteger (FcPattern *p, const char *object, int i);
  781.  
  782. FcPublic FcBool
  783. FcPatternAddDouble (FcPattern *p, const char *object, double d);
  784.  
  785. FcPublic FcBool
  786. FcPatternAddString (FcPattern *p, const char *object, const FcChar8 *s);
  787.  
  788. FcPublic FcBool
  789. FcPatternAddMatrix (FcPattern *p, const char *object, const FcMatrix *s);
  790.  
  791. FcPublic FcBool
  792. FcPatternAddCharSet (FcPattern *p, const char *object, const FcCharSet *c);
  793.  
  794. FcPublic FcBool
  795. FcPatternAddBool (FcPattern *p, const char *object, FcBool b);
  796.  
  797. FcPublic FcBool
  798. FcPatternAddLangSet (FcPattern *p, const char *object, const FcLangSet *ls);
  799.  
  800. FcPublic FcResult
  801. FcPatternGetInteger (const FcPattern *p, const char *object, int n, int *i);
  802.  
  803. FcPublic FcResult
  804. FcPatternGetDouble (const FcPattern *p, const char *object, int n, double *d);
  805.  
  806. FcPublic FcResult
  807. FcPatternGetString (const FcPattern *p, const char *object, int n, FcChar8 ** s);
  808.  
  809. FcPublic FcResult
  810. FcPatternGetMatrix (const FcPattern *p, const char *object, int n, FcMatrix **s);
  811.  
  812. FcPublic FcResult
  813. FcPatternGetCharSet (const FcPattern *p, const char *object, int n, FcCharSet **c);
  814.  
  815. FcPublic FcResult
  816. FcPatternGetBool (const FcPattern *p, const char *object, int n, FcBool *b);
  817.  
  818. FcPublic FcResult
  819. FcPatternGetLangSet (const FcPattern *p, const char *object, int n, FcLangSet **ls);
  820.  
  821. FcPublic FcPattern *
  822. FcPatternVaBuild (FcPattern *orig, va_list va);
  823.     
  824. FcPublic FcPattern *
  825. FcPatternBuild (FcPattern *orig, ...) FC_ATTRIBUTE_SENTINEL(0);
  826.  
  827. /* fcstr.c */
  828.  
  829. FcPublic FcChar8 *
  830. FcStrCopy (const FcChar8 *s);
  831.  
  832. FcPublic FcChar8 *
  833. FcStrCopyFilename (const FcChar8 *s);
  834.     
  835. FcPublic FcChar8 *
  836. FcStrPlus (const FcChar8 *s1, const FcChar8 *s2);
  837.     
  838. FcPublic void
  839. FcStrFree (FcChar8 *s);
  840.  
  841. /* These are ASCII only, suitable only for pattern element names */
  842. #define FcIsUpper(c)    ((0101 <= (c) && (c) <= 0132))
  843. #define FcIsLower(c)    ((0141 <= (c) && (c) <= 0172))
  844. #define FcToLower(c)    (FcIsUpper(c) ? (c) - 0101 + 0141 : (c))
  845.  
  846. FcPublic FcChar8 *
  847. FcStrDowncase (const FcChar8 *s);
  848.  
  849. FcPublic int
  850. FcStrCmpIgnoreCase (const FcChar8 *s1, const FcChar8 *s2);
  851.  
  852. FcPublic int
  853. FcStrCmp (const FcChar8 *s1, const FcChar8 *s2);
  854.  
  855. FcPublic const FcChar8 *
  856. FcStrStrIgnoreCase (const FcChar8 *s1, const FcChar8 *s2);
  857.  
  858. FcPublic const FcChar8 *
  859. FcStrStr (const FcChar8 *s1, const FcChar8 *s2);
  860.  
  861. FcPublic int
  862. FcUtf8ToUcs4 (const FcChar8 *src_orig,
  863.           FcChar32        *dst,
  864.           int        len);
  865.  
  866. FcPublic FcBool
  867. FcUtf8Len (const FcChar8    *string,
  868.        int            len,
  869.        int            *nchar,
  870.        int            *wchar);
  871.  
  872. #define FC_UTF8_MAX_LEN    6
  873.  
  874. FcPublic int
  875. FcUcs4ToUtf8 (FcChar32    ucs4,
  876.           FcChar8    dest[FC_UTF8_MAX_LEN]);
  877.  
  878. FcPublic int
  879. FcUtf16ToUcs4 (const FcChar8    *src_orig,
  880.            FcEndian        endian,
  881.            FcChar32        *dst,
  882.            int        len);        /* in bytes */
  883.  
  884. FcPublic FcBool
  885. FcUtf16Len (const FcChar8   *string,
  886.         FcEndian        endian,
  887.         int            len,        /* in bytes */
  888.         int            *nchar,
  889.         int            *wchar);
  890.  
  891. FcPublic FcChar8 *
  892. FcStrDirname (const FcChar8 *file);
  893.  
  894. FcPublic FcChar8 *
  895. FcStrBasename (const FcChar8 *file);
  896.  
  897. FcPublic FcStrSet *
  898. FcStrSetCreate (void);
  899.  
  900. FcPublic FcBool
  901. FcStrSetMember (FcStrSet *set, const FcChar8 *s);
  902.  
  903. FcPublic FcBool
  904. FcStrSetEqual (FcStrSet *sa, FcStrSet *sb);
  905.  
  906. FcPublic FcBool
  907. FcStrSetAdd (FcStrSet *set, const FcChar8 *s);
  908.  
  909. FcPublic FcBool
  910. FcStrSetAddFilename (FcStrSet *set, const FcChar8 *s);
  911.  
  912. FcPublic FcBool
  913. FcStrSetDel (FcStrSet *set, const FcChar8 *s);
  914.  
  915. FcPublic void
  916. FcStrSetDestroy (FcStrSet *set);
  917.  
  918. FcPublic FcStrList *
  919. FcStrListCreate (FcStrSet *set);
  920.  
  921. FcPublic FcChar8 *
  922. FcStrListNext (FcStrList *list);
  923.  
  924. FcPublic void
  925. FcStrListDone (FcStrList *list);
  926.  
  927. /* fcxml.c */
  928. FcPublic FcBool
  929. FcConfigParseAndLoad (FcConfig *config, const FcChar8 *file, FcBool complain);
  930.  
  931. _FCFUNCPROTOEND
  932.  
  933. #undef FC_ATTRIBUTE_SENTINEL
  934.  
  935.  
  936. #ifndef _FCINT_H_
  937.  
  938. /*
  939.  * Deprecated functions are placed here to help users fix their code without
  940.  * digging through documentation
  941.  */
  942.  
  943. #define FcConfigGetRescanInverval   FcConfigGetRescanInverval_REPLACE_BY_FcConfigGetRescanInterval
  944. #define FcConfigSetRescanInverval   FcConfigSetRescanInverval_REPLACE_BY_FcConfigSetRescanInterval
  945.  
  946. #endif
  947.  
  948. #endif /* _FONTCONFIG_H_ */
  949.